//
// Description: 5992. 基于陈述统计最多好人数
// Created by Loading on 2022/1/23.
//

#include <bits/stdc++.h>

using namespace std;

int maximumGood(vector<vector<int>> &statements) {
    int n = statements.size();
    int res = 0;
    /* 二进制状态压缩，1代表好人，0代表坏人；验证好人的陈述是否与当前状态矛盾即可 */
    for (int i = 1; i < 1 << n; ++i) {
        // 当前状态下好人个数
        int cnt = 0;
        for (int j = 0; j < n; ++j) {
            if ((i >> j & 1) == 1) {
                // 验证好人陈述
                for (int k = 0; k < n; ++k) {
                    // 陈述与当前状态矛盾，当前状态不合法
                    if (statements[j][k] != 2 && statements[j][k] != (i >> k & 1)) {
                        goto end;
                    }
                }
                ++cnt;
            }
        }
        res = max(res, cnt);
        end:;
    }

    return res;
}

int main() {
    vector<vector<int>> statements = {{2, 1, 2},
                                      {1, 2, 2},
                                      {2, 0, 2}};
    int res = maximumGood(statements);
    cout << res << endl;

    return 0;
}